﻿using System;
using System.Collections;

namespace queue类
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建了一个queue类实例对象
            Queue queue = new Queue();
            queue.Enqueue("23号詹姆斯");
            queue.Enqueue("11号欧文");
            queue.Enqueue("24号科比");
            queue.Enqueue("30号库里");
            queue.Enqueue("34号奥尼尔");
            Console.WriteLine("球员进场时间");
            while (queue.Count != 0)
            {
                Console.WriteLine(queue.Dequeue() + "已进场");     //移除并返回位于 Queue 实例开始处的对象
            }
            Console.WriteLine("球员已全部进场");
            if (!queue.Contains("11号欧文"))
            {
                Console.WriteLine("11号欧文已就位");
            }
            else
            {
                Console.WriteLine("11号欧文已下场");
            }
            //queue.Clear();  删除队列所有元素
            //queue.Peek();   //返回位于 Queue 实例开始处的对象但不将其移除

            queue.Enqueue("逆羽");
            queue.Enqueue("幻翎");
            object[] obj = queue.ToArray();
            foreach (var v in obj)
            {
                Console.WriteLine(v);
            }


            queue.Enqueue("北海");
            queue.Enqueue("南宁");
            queue.Enqueue("钦州");
            queue.Enqueue("玉林");
            queue.Enqueue("柳州");

            IEnumerator enumerator = queue.GetEnumerator(); //返回枚举数
            while (enumerator.MoveNext())       
            {
                Console.WriteLine(enumerator.Current);  //输出当前枚举位置的元素
            }


            ////第一种构造器
            //Queue queue2 = new Queue();
            ////第二种构造器
            //Queue queue3 = new Queue(queue2);
            ////第三种构造器
            //Queue queue4 = new Queue(30);
            ////第四种构造器
            //Queue queue5 = new Queue(30,2);



            //构造方法 作用
            //Queue() 创建 Queue 的实例，集合的容量是默认初始容量 32 个元素，使用默认的增长因子
            //Queue(ICollection col)  创建 Queue 的实例，该实例包含从指定实例中复制的元素，并且初始容量与复制的元素个数、增长因子相同
            //Queue(int capacity)     创建 Queue 的实例，并设置其指定的元素个数，默认增长因子
            //Queue(int capacity, float growFactor)   创建 Queue 的实例，并设置其指定的元素个数和增长因子
            //增长因子是指当需要扩大容量时，以当前的容量（capacity）值乘以增长因子（growFactor）的值来自动增加容量。
        }
    }
}
